﻿#pragma once
#include <time.h>
#include <list>
#include <functional>
#include "tradebase_global.h"

// 所有的交易信息都放在这个地方，这里要保存json
namespace TD
{
	// 策略参数类型
	// 策略入场出场点
	struct StrategyBaseData
	{
		// 策略类型（出场入场策略）
		int OrderStrategy;
		// 策略点位（策略出场入场点）
		float StrategyValue;
		// 策略判断时间（策略出场入场时间）
		time_t StrategyUTM;
		// 真实点位（真实入场出场点）
		float RealValue;
		// 真实时间（真实出入场时间）
		time_t RealUTM;
	};
	// 做单信息
	struct Order
	{
		// 入场
		StrategyBaseData EnterData;
		// 截止入场点
		float StopEnterValue;
		// 出场
		StrategyBaseData ExitData;
	};

	// 下单配置
	struct TRADEBASE_EXPORT OrderOption
	{
		OrderOption();
		std::string Symbol; // 合约名称
		short Volumn; // 下单数目 0为平仓 <0表示做空 >0表示做多
		short TickCount; // 下单价格需要便宜多少个Tick的价格
		float LastPrice; // 下单的时候当时价格
	};

	// 下单后的回调
	typedef std::function<void(const std::string &pSymbol, float orderPrice, char pTimeStr[9])> OrderBackFunc;

	// 初始化做单信息
	void TRADEBASE_EXPORT InitOrder(Order &outOrder);
	// 判断是否是亏损但
	bool TRADEBASE_EXPORT IsLossOrder(bool isLong, const Order &pOrder);
	// 是否到达策略入场点
	// 是否真实入场
	// 是否到达策略出场点
	// 是否真实出场
}